import {getToken ,setToken,removeToken} from '@/utils/auth'
import{login} from '@/api/user';
import { getUserProfile } from '@/api/user'
import{ getUserDetailById } from '@/api/user'
export default {
  namespaced: true,
//   公共数据
  state: {
      //本地获取token
      token:getToken()||null,
      userInfo: {} 
  },
  mutations: {
    //   设置token
    setToken(state,newToken){
        state.token = newToken
        //本地存储token
        setToken(newToken)
    },
    //删除token
    removeToken(state){
        state.token = null
        // 删除本地
        removeToken()
    },
      // 设置用户信息
      setUserInfo(state, userInfo) {
        state.userInfo =  userInfo
    },
    // 删除用户信息
    reomveUserInfo(state) {
      state.userInfo = {}
    }
  
  },

  actions: {
      //发送请求 做登录  登录成功保存token
      async userLogin(context,fromData){
        //   console.log('action userLogin',context,fromData)
          const res = await login(fromData)
          console.log('在action发送请求，结果',res)
        //   调用mutation
        context.commit('setToken',res.data)
      },
       // 用来获取用户信息的action
    async getUserInfo(context) {
        // ajax获取数据
      //   1. ajax获取基本信息，包含用户id
        const result = await getUserProfile()
        console.log('用来获取用户信息的,', result)
      //   2. 根据用户id（rs.data.userId）再发请求，获取详情（包含头像）
        const info = await getUserDetailById(result.data.userId)
        context.commit('setUserInfo', result.data)
        // 把上边获取的两份合并在一起，保存到vuex中
        context.commit('setUserInfo', { ...info.data, ...result.data })
  },
  //实现退出功能
        userLogout(context){
            context.commit('reomveUserInfo')
            context.commit('removeToken')

        }

}
}
